<?php
namespace app\admin\model;
use think\File;

class Upload{
    //图片上传
    public function upload($file, $savePath = './', $type = array('image/jpeg', 'image/png', 'image/git'), $size = 0)
    {
        //设置一个保存返回值的数组
        $rec = array('error'=>false, 'mess'=>'');
        //判断是否上传成功
        if ($file['error'] > 0) {
            //输出是一个什么错误
            switch ($file['error']) {
                case 1: $info = '其值为 1，上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。';break;
                case 2: $info = '其值为 2，上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。';break;
                case 3: $info = '其值为 3，文件只有部分被上传。';break;
                case 4: $info = '其值为 4，没有文件被上传。';break;
                case 6: $info = '其值为 6，找不到临时文件夹。';break;
                case 7: $info = '其值为 7，文件写入失败。';break;
            }
            $rec['mess'] = $info;
            return $rec;
        }
        
        //判断是否是允许上传的类型
        if (!in_array($file['type'], $type)) {
            $rec['mess'] = '文件类型不被允许';
            return $rec;
        }

        //设文件上传的大小
        if ($size > 0 && $file['size'] > $size) {
            $rec['mess'] = '文件过大';
            return $rec;
        }
        //拼接一个保存文件的路径
        //获得文件的后缀名
        $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
        //根据日期创建一个目录
        $timeDir = date('Ymd', time());
        //var_dump($timeDir);
        //将保存的路径和时间目录拼接在一起
        $saveDir = rtrim($savePath, '/').'/'.$timeDir;
        //判断该目录是否存在
        if (!file_exists($saveDir)) {
            mkdir($saveDir, 0777, true);
        }

        //随机一个文件名并且将文件名拼接在保存路径的后面
        $filename = time().mt_rand(1000, 9999).'.'.$ext; 
        $savename = rtrim($saveDir, '/').'/'.$filename;

        //判断是否是合法的上传
        if (is_uploaded_file($file['tmp_name'])) {
            //移动临时目录到指定的目录中
            if (move_uploaded_file($file['tmp_name'], $savename)) {
                $rec['error'] = true;
                $rec['mess'] = rtrim($timeDir, '/').'/'.$filename;
                return $rec;
            } else {
                $rec['mess'] = '上传失败';
                return $rec;
            }
        } else {
            $rec['mess'] = '上传方式不合法';
            return $rec;
        }
    }

}




